import axios from 'axios';
import { ElMessage, ElMessageBox } from 'element-plus';

// 创建并配置一个新的axios
export const service = axios.create({
  // baseURL: 'http://core.api.test.hfkoushare.com',
  timeout: 60000, // 请求超时时间 毫秒
  withCredentials: true, // 异步请求时是否携带cookie
  headers: {
    // 设置后端需要的传参类型
    'Content-Type': 'application/json',
    Client: 'front_web', // 所属客户端
    // "Authorization": "",
    // "X-Requested-With": "XMLHttpRequest",
  },
});

// service.defaults.withCredentials = true; //跨域请求设置
// axios.defaults.headers.post['Content-Type'] = 'application/json'; //设置post请求头

// 添加请求拦截器
service.interceptors.request.use(
  (config) => {
    const runtimeConfig = useRuntimeConfig()
    const userPinia = useUserPinia()
    const token = userPinia.getToken
    config.baseURL = runtimeConfig.public.api.baseUrl
    if (config.method === 'get' && config.params) {
      // get请求映射params参数
      let url = config.url + '?' + transParams(config.params);
      url = url.slice(0, -1);
      config.params = {};
      config.url = url;
    }
    config.headers['Authorization'] =`Bearer ${token}`;
    // 在发送请求之前做些什么。。。
    return config;

  },
  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error);
  },
);

let isTokenRefreshing = false; // token是否正在刷新

let requestList = []; //正在等待请求的接口队列

// 添加响应拦截器
service.interceptors.response.use(
  (response) => {
    console.log('response', response)
    const res = response.data;
    return res
  },
  (error) => {
    // ElMessage.warning(error.message || '服务器开小差了呢，请稍后再试~');
    if (error.code !== 'ERR_CANCELED') {
      ElMessage.warning('服务器开小差了呢，请稍后再试~');
    }
    return Promise.reject(error);
  },
);

